
package com.joysuch.wwyt.risk.util;

import com.joysuch.wwyt.bp.enums.RiskPointTypes;
import com.joysuch.wwyt.risk.entity.RiskPoint;
import org.apache.commons.lang3.StringUtils;

public class RiskPointUtil {

    public static String extractRiskIdentifyContentForWeb(RiskPoint rp) {
        RiskPointTypes type = RiskPointTypes.findByCode(rp.getType());
        // bean.setDescription(rp.getDescription());
        StringBuilder sb = new StringBuilder();
        if (type == RiskPointTypes.DEVICE_FACILITY) {
//            if (StringUtils.isBlank(rp.getStandard()) && StringUtils.isBlank(rp.getUnstandardSituationConsequence())
//                    && (StringUtils.isNotBlank(rp.getDescription()) || StringUtils.isNotBlank(rp.getAccidentType()))) {
                // 客户申华：设备设施也采用的JHA+LEC评估，需要做兼容处理
                sb.append("<strong>存在的主要危险(有害)因素</strong>:<br>").append(escapeNull(rp.getUnstandardSituationConsequence())).append("<br>");
                sb.append("<strong>可能发生的事故类型及后果</strong>:</br>").append(escapeNull(rp.getAccidentType()));
//            } else {
//                sb.append("<strong>标准</strong>:<br>").append(escapeNull(rp.getStandard())).append("<br>");
//                sb.append("<strong>不符合标准情况及后果</strong>:<br>")
//                        .append(escapeNull(rp.getUnstandardSituationConsequence()));
//            }
        } else if (type == RiskPointTypes.JOB_ACTIVITY) {
            sb.append("<strong>存在的主要危险(有害)因素</strong>:<br>").append(escapeNull(rp.getUnstandardSituationConsequence())).append("<br>");
            sb.append("<strong>可能发生的事故类型及后果</strong>:</br>").append(escapeNull(rp.getAccidentType()));
        }
        return sb.toString();
    }

    private static Object escapeNull(String description) {
        return description == null ? "" : description;
    }

    public static Integer findWorkLevelFromText(String text) {
        if (text == null) {
            return null;
        }
        Integer level = null;
        if (text.contains("一级")) {
            level = 1;
        } else if (text.contains("特级")||text.contains("特殊危险")||text.contains("特殊")) {
            level = 0;
        } else if (text.contains("二级")) {
            level = 2;
        } else if (text.contains("三级")) {
            level = 3;
        } else if (text.contains("四级")) {
            level = 4;
        }
        return level;
    }

    /**
     * 根据LECD规则判断区域风险。区域风险由固定风险+控制风险构成。规则如下：
     * 
     * <pre>
     * 1. 如果二者有一个为重大风险则为重大风险，如果二者同时为较大风险，则结果为重大风险
     * 2. 除1情况外，有一个为较大风险，则为较大风险
     * 3. 除1、2情况外，有一个为一般风险，则为一般风险
     * 4. 除1、2、3情况外，为低风险
     * </pre>
     * 
     * @param districtStableRiskLevel
     *            区域固有风险等级
     * @param controlRiskLevel
     *            控制风险等级
     * @return 区域风险级别
     */
    public static Integer calculateDistrictRiskLevel(Integer districtStableRiskLevel, Integer controlRiskLevel) {
        Integer level = null;
        if (districtStableRiskLevel != null && controlRiskLevel != null) {
            if (districtStableRiskLevel == 1 || controlRiskLevel == 1
                    || (districtStableRiskLevel == 2 && controlRiskLevel == 2)) {
                level = 1;
            } else if (districtStableRiskLevel == 2 || controlRiskLevel == 2) {
                level = 2;
            } else if (districtStableRiskLevel == 3 || controlRiskLevel == 3) {
                level = 3;
            } else {
                level = 4;
            }
        } else if (districtStableRiskLevel != null) {
            level = districtStableRiskLevel;
        } else if (controlRiskLevel != null) {
            level = controlRiskLevel;
        }
        return level;
    }
}
